package small.woods.msSearch.po;

import java.util.List;
import java.util.Map;

/**
 * @description:
 * @author: yutingting
 * @create: 2022-01-17 10:00
 **/
public class EsPage {
        /**
         * 当前页
         */
        private int currentPage;
        /**
         * 每页显示多少条
         */
        private int pageSize;

        /**
         * 总记录数
         */
        private int recordCount;
        /**
         * 本页的数据列表
         */
        private List<Map<String, Object>> recordList;

        /**
         * 总页数
         */
        private int pageCount;
        /**
         * 页码列表的开始索引（包含）
         */
        private int beginPageIndex;
        /**
         * 页码列表的结束索引（包含）
         */
        private int endPageIndex;

        /**
         * 只接受前4个必要的属性，会自动的计算出其他3个属性的值
         *
         * @param currentPage
         * @param pageSize
         * @param recordCount
         * @param recordList
         */
        public EsPage(int currentPage, int pageSize, int recordCount, List<Map<String, Object>> recordList) {
            this.currentPage = currentPage;
            this.pageSize = pageSize;
            this.recordCount = recordCount;
            this.recordList = recordList;

            // 计算总页码
            pageCount = (recordCount + pageSize - 1) / pageSize;

            // 计算 beginPageIndex 和 endPageIndex
            // >> 总页数不多于10页，则全部显示
            if (pageCount <= 10) {
                beginPageIndex = 1;
                endPageIndex = pageCount;
            }
            // >> 总页数多于10页，则显示当前页附近的共10个页码
            else {
                // 当前页附近的共10个页码（前4个 + 当前页 + 后5个）
                beginPageIndex = currentPage - 4;
                endPageIndex = currentPage + 5;
                // 当前面的页码不足4个时，则显示前10个页码
                if (beginPageIndex < 1) {
                    beginPageIndex = 1;
                    endPageIndex = 10;
                }
                // 当后面的页码不足5个时，则显示后10个页码
                if (endPageIndex > pageCount) {
                    endPageIndex = pageCount;
                    beginPageIndex = pageCount - 10 + 1;
                }
            }
        }


        public int getCurrentPage() {
            return currentPage;
        }

        public void setCurrentPage(int currentPage) {
            this.currentPage = currentPage;
        }

        public int getPageSize() {
            return pageSize;
        }

        public void setPageSize(int pageSize) {
            this.pageSize = pageSize;
        }

        public int getRecordCount() {
            return recordCount;
        }

        public void setRecordCount(int recordCount) {
            this.recordCount = recordCount;
        }

        public List<Map<String, Object>> getRecordList() {
            return recordList;
        }

        public void setRecordList(List<Map<String, Object>> recordList) {
            this.recordList = recordList;
        }

        public int getPageCount() {
            return pageCount;
        }

        public void setPageCount(int pageCount) {
            this.pageCount = pageCount;
        }

        public int getBeginPageIndex() {
            return beginPageIndex;
        }

        public void setBeginPageIndex(int beginPageIndex) {
            this.beginPageIndex = beginPageIndex;
        }

        public int getEndPageIndex() {
            return endPageIndex;
        }

        public void setEndPageIndex(int endPageIndex) {
            this.endPageIndex = endPageIndex;
        }
}
